# -*- coding: utf-8 -*-
from functools import wraps

from flask import session, jsonify, g
from werkzeug.routing import BaseConverter

#  自定义转换器
from ihome.utils.response_code import RET


class RegexConverter(BaseConverter):
    def __init__(self, url_map, *args):
        super(RegexConverter, self).__init__(url_map)
        self.regex = args[0]


# 检查用户登录的验证装饰器
def login_required(view_func):
    @wraps(view_func)
    def wrapper(*args, **kwargs):
        user_id = session.get('user_id')
        if user_id is not None:
            # 表示用户已登录
            g.user_id = user_id
            # 将user_id 保存到g对象，在一次请求函数当中，多个函数调用，在视图函数中可以直接使用
            return view_func(*args, **kwargs)
        else:
            # 用户未登录
            return jsonify(errno=RET.SESSIONERR, errmsg='用户未登录')

    return wrapper
    # 装饰器不改变原有的函数的签名，说明文档等
